From a305fd91ced781f86ed05732a3cac9fb77e5902d Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Kol=C3=A5s?= Date: Sun, 18 Mar 2012 15:00:07 +0000 Subject: [PATCH] palette: add fastish path for alpha<->no alpha --- babl/babl-palette.c | 58 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 5 deletions(-) diff --git a/babl/babl-palette.c b/babl/babl-palette.c index fc912f1..c2340db 100644 --- a/babl/babl-palette.c +++ b/babl/babl-palette.c @@ -114,7 +114,6 @@ rgba_to_pal (char *src, { BablPalette **palptr = dst_model_data; BablPalette *pal = *palptr; - assert(pal); while (n--) { int idx; @@ -278,6 +277,41 @@ pala_to_rgba (char *src, return n; } +#include "base/util.h" + +static long +copy_strip_1 (int src_bands, + char **src, + int *src_pitch, + int dst_bands, + char **dst, + int *dst_pitch, + long samples) +{ + long n = samples; + + BABL_PLANAR_SANITY + while (n--) + { + int i; + + for (i = 0; i < dst_bands; i++) + { + double foo; + if (i < src_bands) + foo = *(double *) src[i]; + else + foo = 1.0; + *(double *) dst[i] = foo; + } + + BABL_PLANAR_STEP + } + printf ("."); + return samples; +} + + /* should return the BablModel, permitting to fetch * other formats out of it? */ @@ -336,14 +370,14 @@ void babl_new_palette (const char *name, Babl **format_u8, babl_conversion_new ( model, - babl_model ("RGBA"), + babl_model ("RGBA"), "linear", pala_to_rgba, "data", palptr, NULL ); babl_conversion_new ( - babl_model ("RGBA"), + babl_model ("RGBA"), model, "linear", rgba_to_pala, "data", palptr, @@ -352,14 +386,28 @@ void babl_new_palette (const char *name, Babl **format_u8, babl_conversion_new ( model_no_alpha, - babl_model ("RGBA"), + babl_model ("RGBA"), "linear", pal_to_rgba, "data", palptr, NULL ); babl_conversion_new ( - babl_model ("RGBA"), + model_no_alpha, + model, + "planar", copy_strip_1, + NULL + ); + + babl_conversion_new ( + model, + model_no_alpha, + "planar", copy_strip_1, + NULL + ); + + babl_conversion_new ( + babl_model ("RGBA"), model_no_alpha, "linear", rgba_to_pal, "data", palptr, -- 2.30.2